import { Indicator } from "mint-ui"; /* 二次封装 */
import axios from "axios";
import store from "../../store";
//import { router } from "server/app";//错的
import router from "../../router"
import { Toast } from "vant";
/* this 代表当前对象 */
export default{
    /* common  默认值*/
    common:{
        method:'GET',
        data:{},
        params:{},
        headers:{},
    },
    //async $axios(options={}){
    async $axios(options={}){
        /* options.method 从上面传过来的值 */
        options.method=options.method || this.common.method;
        options.data=options.data || this.common.data;
        options.params=options.params || this.common.params;
        options.headers=options.headers || this.common.headers;
        //请求前，显示加载中  请求转圈插件
        Indicator.open({
            text: "加载中...",
            spinnerType: "fading-circle",//这个是
        });
        //console.log(store);
        //console.log(store.state.user.token);
        //是否是登录状态  这个不是太懂
        if(options.headers.token){  //这个始终存在 如果下面赋不了值就到下面 
            options.headers.token =store.state.user.token;//如果有token就给token赋值
            if(!options.headers.token){//token赋值失败
            //console.log("测试能不能显示");
            //如果没有登录还需要其他操作
                router.push("/login");
            //这个其实是有缺点的，因为这里直接跳转回带不过去token，（本来就是没有token），但是下面axios就会继续执行，这点是不对的，会导致500警告，所以要用到
            //导航守卫
            //导航守卫：全局/路由独享/组件内  src/index.js
           }         
        };
        
        //const v = await axios(options);
        /*  console.log(v); */
        //let data = v.data.data;

        //Token过期返回1000 重新登录
        //if(data.code==1000){
        //    Toast('Token过期,请重新登录');
        //    Indicator.close();
        //    return router.push("/login");//这个return后 后面不执行了
        //}

        //return await new Promise((res, rej) => {
        //    if (!v) { return rej(); }
        //   //结束==>关闭
        //    setTimeout(() => {
        //        Indicator.close();
        //    }, 520); /* 有数据后就关闭 */ //延迟关闭
        //    res(data);
        //});

		return axios(options).then(v=>{
			let data = v.data.data;
            //如果token过期，重新登录
            if( data.code == 1000 ){
                Indicator.close();
                return router.push('/login');
            }
            return new Promise((res,rej)=>{
                if( !v ) return rej();
                //结束===》关闭加载中
                setTimeout(()=>{
                    Indicator.close();
                },500)
                res( data );
            })          
		})
    } ,
}